package main

import "fmt"

// 定义一个发邮件的函数
func SendMail(data string) bool {
	fmt.Println("发邮件成功")
	return true
}

// 函数可以传递多个参数
func add(num1 int, num2 int) (int, bool) {
	result := num2 + num1
	return result, true
}

// 数组类型
func test(arg [2]int) {
	arg[0] = 666
}

// 指针类型
func test2(arg *[2]int) {
	arg[0] = 666
}

// 函数作为参数
func add100(arg int) (int, bool) {
	return arg + 100, true
}

// 函数作为参数
func proxy(data int, exec func(int) (int, bool)) int {
	data, flag := exec(data)
	if flag {
		return data
	} else {
		return 999
	}
}

// 变长参数
func do(num ...int) int {
	fmt.Println(num)
	sum := 0
	for _, value := range num {
		sum += value
	}
	return sum
}

func main() {

	// 指针类型的参数
	data_list := [2]int{11, 22}
	test(data_list)
	fmt.Println(data_list) //[11 22]

	// 指针类型的参数
	data_list2 := [2]int{11, 22}
	test2(&data_list2)
	fmt.Println(data_list2) //[666 22]

	// 函数作为参数
	result := proxy(123, add100)
	fmt.Println(result) // 223

	// 变长参数
	r1 := do(1,2,3,4)
	r2 := do(1,1,1)
	fmt.Println(r1,r2)	// 10 3

}
